/**
 * 中文字体支持工具
 * 解决PDF导出中文乱码问题
 */

/**
 * 检查系统是否支持中文字体
 */
export function checkChineseFontSupport(): boolean {
  if (typeof window === 'undefined') return false;
  
  // 检查常见的中文字体
  const testFonts = [
    'SimSun', 
    'SimHei', 
    'Microsoft YaHei', 
    'STSong',
    'STKaiti',
    'STFangsong',
    'PingFang SC',
    'Hiragino Sans GB',
    'WenQuanYi Micro Hei',
    'Noto Sans CJK SC'
  ];
  
  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');
  if (!context) return false;
  
  // 测试文本
  const testText = '中文测试';
  
  // 基准测量（使用默认字体）
  context.font = '16px Arial';
  const baseWidth = context.measureText(testText).width;
  
  // 测试每个中文字体
  for (const font of testFonts) {
    context.font = `16px "${font}"`;
    const width = context.measureText(testText).width;
    
    // 如果宽度与基准不同，说明字体支持中文
    if (Math.abs(width - baseWidth) > 2) {
      return true;
    }
  }
  
  return false;
}

/**
 * 获取可用的中文字体列表
 */
export function getAvailableChineseFonts(): string[] {
  const availableFonts: string[] = [];
  const testFonts = [
    'SimSun', 
    'SimHei', 
    'Microsoft YaHei', 
    'STSong',
    'STKaiti',
    'STFangsong',
    'PingFang SC',
    'Hiragino Sans GB',
    'WenQuanYi Micro Hei',
    'Noto Sans CJK SC'
  ];
  
  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');
  if (!context) return availableFonts;
  
  const testText = '中文测试';
  context.font = '16px Arial';
  const baseWidth = context.measureText(testText).width;
  
  for (const font of testFonts) {
    context.font = `16px "${font}"`;
    const width = context.measureText(testText).width;
    
    if (Math.abs(width - baseWidth) > 2) {
      availableFonts.push(font);
    }
  }
  
  return availableFonts;
}

/**
 * 获取最佳的中文字体
 */
export function getBestChineseFont(): string {
  const availableFonts = getAvailableChineseFonts();
  
  // 优先级排序
  const priorityFonts = [
    'SimSun',          // 宋体
    'SimHei',          // 黑体
    'Microsoft YaHei', // 微软雅黑
    'STSong',          // 华文宋体
    'PingFang SC',     // 苹方
    'Hiragino Sans GB' // 冬青黑体
  ];
  
  for (const font of priorityFonts) {
    if (availableFonts.includes(font)) {
      return font;
    }
  }
  
  // 如果没有找到优先字体，返回第一个可用的
  return availableFonts[0] || 'Arial';
}

/**
 * 预加载中文字体
 */
export async function preloadChineseFonts(): Promise<void> {
  if (typeof window === 'undefined') return;
  
  // 检查是否已经预加载
  if ((window as any).chineseFontsPreloaded) {
    return;
  }
  
  try {
    const fonts = getAvailableChineseFonts();
    if (fonts.length > 0) {
      (window as any).chineseFontsPreloaded = true;
      console.log('中文字体预加载完成，可用字体:', fonts);
    }
  } catch (error) {
    console.warn('中文字体预加载失败:', error);
  }
}